﻿
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RbacLib.Entities
{
    [Serializable]
    public class Domain : BaseEntity
    {
        public virtual DateTime? CreateDate { get; set; }
        public virtual DateTime? UpdateDate { get; set; }
        public virtual int? UpdateBy { get; set; }
        public virtual int? Version { get; set; }
        public virtual String DomainName { get; set; }
        public virtual String Description { get; set; }
        public virtual int? ProjectId { get; set; }
        public virtual IList<Function> Functions { get; set; }

        /* note 2 T4 ถ้า attribute type เป็น virtual IList type ต้อง
          สร้าง contructor เพื่อป้องกัน Add list ที่เป็น null */
        public Domain()
        {
            Functions = new List<Function>();

        }

        /* note 2 T4 AddEvaluation และ RemoveEvaluation method จะสร้างก็ต่อเมื่อ
           มี type ที่เป็น virtual IList ***ที่ class ภายใน IList<class??> มี class นี้ เป็น attribute ด้วย */
        public virtual void AddFunctions(Function arg)
        {
            //arg.Domain = this;
            Functions.Add(arg);
        }
    }
}
